/*
* Copyright (c) 2016 . All Rights Reserved.
*/
package com.cgmnx.admin.biz.rbac;

import com.cgmnx.admin.common.bean.CurrentUserInfo;
import com.cgmnx.admin.common.bean.Limiter;
import com.cgmnx.admin.dao.entity.rbac.UserEntity;
import com.google.common.base.Optional;

import java.util.List;


/**
 * 用户信息操作类
 *
 * @author: created  Date: 16/12/12 Time: 下午2:08
 * @version: 1.0
 */
public interface UserBiz {

    /**
     * 保存用户信息
     *
     * @param entity
     * @return
     */
    Integer save(UserEntity entity);

    /**
     * 更新用户信息
     *
     * @param entity
     * @return
     */
    Integer update(UserEntity entity);

    /**
     * 开启用户
     *
     * @param idList
     * @return
     */
    Boolean enable(List<Integer> idList, CurrentUserInfo operator);

    /**
     * 屏蔽用户
     *
     * @param idList
     * @return
     */
    Boolean disable(List<Integer> idList, CurrentUserInfo operator);

    /**
     * 根据用户id查询用户信息
     *
     * @param id 用户id
     * @return 用户信息
     */
    Optional<UserEntity> queryById(Integer id);


    Optional<UserEntity> queryWithRoleById(Integer id);

    /**
     * 分页统计总数
     *
     * @param searchName userd或者真实姓名
     * @return
     */
    Integer count(String searchName, String userId);

    /**
     * 分页查询，searchName
     *
     * @param searchName 代表的是userId或者真实姓名
     * @param limiter    分页信息
     * @return
     */
    List<UserEntity> queryPage(String searchName, String userId, Limiter limiter);

    Optional<UserEntity> queryByUserId(String userId);

    boolean updatePassword(UserEntity entity, String oldPassword, String newPassword);

    List<UserEntity> queryByIdList(List<Integer> idList);
}